iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
自我挑戰組

上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐系列 第 13

[鐵人賽] Day 13 ARM 第 18 章節 memory barrier instruction 產生的原因(2)

  • 分享至 

  • xImage
  •  

今日的行程:
辦公室:09:00 - 14:50
讀書室:21:30 - 22:30

正片開始

今日的記錄:

ARM64 System Memory

  • DMB 和 DSB 指令會帶參數,參數用來指定記憶體的共享屬性還有規範具體的存取順序

    • 共享屬性 (Shareability) 分為
      • full system shareable
      • outer shareable
      • inner shareable
      • non-shareable
    • 存取順序則分為
      • Load --- Load/Store (LD)
      • Store --- Store (ST)
      • ALL (SY)
    • 所以總共有 12 種參數
      • SY: 表示作用在全系統上,且在 barrier 後所有的Load/Store,一定會在 barrier 前的所有 Load/Store 都完成後,才執行。
      • ST: 表示作用在全系統上,且在 barrier 後所有的 Store,一定會在 barrier 前的所有的 Store 都完成後,才執行。
      • LD: 表示作用在全系統上,且在 barrier 後所有的 Load,一定會在 barrier 前的所有 Load 都完成後,才執行。
      • ISH: Inner shareable SY
      • ISHST: Inner shareable ST
      • ISHLD: Inner shareable LD
      • OSH: Outer shareable SY
      • OSHST: Outer shareable SY
      • OSHLD: Outer shareable LD
      • NSH: Non-shareable SY
      • NSHST: Non-shareable ST
      • NSHLD: Non-shareable LD
  • 至於要怎麼決定哪些區域是在哪個 region,則是在一開始就要規劃好的,如ARM64 System Memory所描述

  • 除了 memory barrier 指令之外,ARMv8 中,Load/Store 指令也可以含有 acquire/release 語意來規範指令執行的順序,列舉如下:

    • LDAR, LDARB, LDARH
    • STLR, STLRB, STLRH
    • LDAXR, LDAXRB, LDAXRH, LDAXP
    • STLXR, STLXRB, STLXRH, STLXP

總結

  • ARMv8 提供了 DMB, DSB 和含有 aquire/release 語意的 LD/ST 指令來做為 memory barrier 用途
    • DMB, DSB 帶有記憶體共享屬性和順序的參數
    • ISB 只作用在 local core,若必要,需要自行做 broadcast
  • RISC-V 則是提供 fence 和還有 acquire/release 語意的 atomic 指令來做為 memory barrier 用途
    • fence 參數是 iorw 分別規範 input/output (device region)、read/write (memory region)
    • fence.i 一樣只作用在 local hart,若必要,需要自行做 broadcast (OpenSBI 提供了 rfence framework)

上一篇
[鐵人賽] Day 12 ARM 第 18 章節 memory barrier instruction 產生的原因
下一篇
[鐵人賽] Day 14 ARM 第 3 章節 A64指令集(1) -- Load/Store 指令(1)
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言